# coding= utf-8
import urllib

# 关于Python3 和 Python2 中常用urllib包的变化
'''
        urllib库和urilib2库合并成了urllib库。
        其中urllib2.urlopen()变成了urllib.request.urlopen()
        urllib2.Request()变成了urllib.request.Request()
'''


# 由于相关库并未现实封存，所以需要向服务端发送请求,因而需要token服务

# 个人API申请服务信息摘录
App_ID = '16083814'
API_Key = 'RoWv7mmWchYBMvGtbYhc7aeF'
Secret_Key = '0wXxzQ26C254GEqTregIfNd6K4gHiMN5'

# 因为获取token值与实验同时进行太不方便，(具体理由为何不能同时获得，下面由于类型的关系理由已经说了)特将此部分函数单独运行其他处
# 获取token值步骤(一般化步骤)
# host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + API_Key + '&client_secret='+ Secret_Key
# request = urllib.request.Request(host)
# request.add_header('Content-Type','applocation/json;charset=UTF-8')
# response = urllib.request.urlopen(request)
# content = response.read()
# access_token_init = content.decode("UTF-8")
# print(access_token_init)# 获得的是字典形式的一串信息，需再处理
# print(type(access_token_init))
# # 这里的access_token值我已经先运行上面函数获得 why？因为获取的服务内容是String类型无法通过键值对找到
# access_token = "24.ca437df1b92df5342e0466442b7b9b94.2592000.1558523687.282335-16083814"
# request 编码小细节
'''
content 的类型是: bytes 
access_token 的类型是: string 
content.encode("UTF-8") 的类型是: bytes 
知道了这些细节，修改代码bug就很简单了。
'''

# 人脸融合网址
request_url = "https://aip.baidubce.com/rest/2.0/face/v1/merge"

# 初始params参数设定
params =  "{\"image_template\":{\"image\":\"sfasq35sadvsvqwr5q...\",\"image_type\":\"lc.png\",\"quality_control\":\"NONE\"},\"image_target\":{\"image\":\"sfasq35sadvsvqwr5q...\",\"image_type\":\"cxk.png\",\"quality_control\":\"NONE\"}}"

# 另一个专门获取access_token值的获取
access_token = "24.1a7a88451de32999e7d64a566b0501c6.2592000.1558526819.282335-16083814"

# 具体申请服务
request_url = request_url + "?access_token=" + access_token
request = urllib.request.Request(url=request_url,data=params.encode("UTF-8"))
request.add_header('Content-Type','applocation/json;charset=UTF-8')
response = urllib.request.urlopen(request)
content = response.read()


if content:
    print(content.decode("UTF-8"))

# 大致调用流程对了，错误信息显示出v3版本权限未获得，因为百度API关于人脸融合的API没有正式开放，所以暂无权限无法使用